package de.hatraco.funderberg.blackjack.views;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;

import de.hatraco.funderberg.blackjack.data.DataMISC;
import de.hatraco.funderberg.blackjack.data.GraphicsBlackJack;

public class RulesDialog extends JDialog {
	
	//Singleton Pattern: Stellt sicher, dass nur eine Instanz von RulesDialog existiert
	private static RulesDialog instance = new RulesDialog();

	public static RulesDialog getInstance() {
		if(instance == null) {
			instance = new RulesDialog();
		}
		return instance;
	}
	
	private JLabel bg_rules;
	private JLabel rulesfield;
	
	private JButton b_rules_back;
	
	//private String link = DataMISC.LINKIMG;
	private String linktxt = DataMISC.LINKTXT;
	
	private GraphicsBlackJack img;
	
	private RulesDialog() {
		
		//Instanziert GraphicsBlackJack (für die Bilder)
		this.img = GraphicsBlackJack.getInstance();
		
		//Legt die Größe des Fensters fest
		this.setSize(1000,850);
		//Legt fest, dass die Größe nicht verändert werden kann
		this.setResizable(false);
		//Legt fest, dass das Fenster nicht über das "X" rechts oben geschlossen werden kann
		this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
		//Gibt dem Fenster ein BorderLayout
		this.setLayout(new BorderLayout());
		//Legt den Hintergrund fest
        bg_rules = new JLabel(img.getBgrules());
        //Fügt den Hintergrund hinzu
        this.add(bg_rules);
        //Gibt dem Hintergrund ein "leeres" Layout
        bg_rules.setLayout(null);
		
        //Instanziert, Modifiziert und Positioniert die Elemente
        //JLabel
		rulesfield = new JLabel();
		rulesfield.setFont(DataMISC.ARIAL_BOLD12);
		rulesfield.setForeground(Color.WHITE);
		rulesfield.setBounds(10, 10, 1000, 750);
		
		//Holt den anzuzeigenden Text aus einem .txt File		
		try {
			String fileURL = linktxt + DataMISC.RULES; 
			BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream(fileURL)));
			
			String line = null;
			while ((line = reader.readLine()) != null) {
				rulesfield.setText(rulesfield.getText() + line);
			}
			reader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//Button
		b_rules_back = new JButton(img.getBtback());
		b_rules_back.setBounds(435, 770, 120, 40);
		
		//Fügt die Elemente dem Hintergrund hinzu
		bg_rules.add(rulesfield);
		bg_rules.add(b_rules_back);
	}
	
	//Definiert Listener für den Button
	public void setRulesListener(ActionListener ae) {
		this.b_rules_back.addActionListener(ae);
	}

	public JButton getB_rules_back() {
		return b_rules_back;
	}

	public void setB_rules_back(JButton b_rules_back) {
		this.b_rules_back = b_rules_back;
	}
}
